2023/12/231038字符

查询子串首次出现的位置

如:原串 abccbaxzabc 子串为 axz 结果为5

var str = 'abccbaxzabc';
var subStr = 'axz';

方法1

function getIndex1 (str, sub) {
    for (var i = 0; i < str.length - sub.length; i++) {
        for (var j = 0; j < sub.length; j ++) {
            // 每次循环,j 对应 j+i
            if (sub[j] != str[j + i]) {  // 只要有一个不符合就跳出
                break;
            }
            if (j == sub.length - 1) {
                return i;
            }
        }
    }
    return -1;  // 没有找到返回 -1
}
console.log(getIndex1(str, subStr));  //--> 5

方法2

function getIndex2 (str, childrenStr) {
    var start = 0;
    var end = str.length - childrenStr.length;
    //console.log(end, str.length);
    while (start <= end) {
        if (str.slice(start, childrenStr.length + start) === childrenStr) {
            return start;
        }
        start++;
    }
    return -1;
}